home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / nwtp06 / appn9001.txt < prev    next >
Text File  |  1996-07-10  |  87KB  |  1,645 lines

  1. (Note: AppNotes September 1990)
  2.  
  3. NetWare Communications Processes
  4.  
  5.  Paul Turner
  6.  Consultant
  7.  Systems Engineering Division
  8.  
  9. Abstract: 
  10.  
  11. This AppNote provides a comprehensive explanation of the protocols and
  12. algorithms that govern communications in the 286-based NetWare, NetWare
  13. 386, and Portable NetWare environments. Topics covered include routing
  14. and connection control.
  15.  
  16. Disclaimer
  17.  
  18. Novell, Inc. makes no representations or warranties with respect to the
  19. contents or use of these Application Notes (AppNotes) or any of the
  20. third-party products discussed in the AppNotes. Novell reserves the right
  21. to revise these AppNotes and to make changes in their contents at any
  22. time, without obligation to notify any person or entity of such revisions
  23. or changes. These AppNotes do not constitute an endorsement of the third-
  24. party product or products that were tested. The configuration or
  25. configurations tested or described may or may not be the only available
  26. solution. Any test is not a determination of product quality or
  27. correctness, nor does it ensure compliance with any federal, state or
  28. local requirements. Novell does not warranty products except as stated in
  29. applicable Novell product warranties or license agreements.
  30.  
  31. Copyright { 1990 by Novell, Inc., Provo, Utah. All rights reserved.
  32.  
  33. As a means of promoting NetWare AppNotes, Novell grants you without
  34. charge the right to reproduce, distribute and use copies of the AppNotes
  35. provided you do not receive any payment, commercial benefit or other
  36. consideration for the reproduction or distribution, or change any
  37. copyright notices appearing on or in the document.
  38.  
  39. Introduction
  40.  
  41. This AppNote is a preliminary excerpt from an upcoming Novell Systems
  42. Engineering Division research report entitled "NetWare Internals and
  43. Structure." It provides a technical description of the protocols that
  44. make client-server communications possible on NetWare networks. The
  45. information contained in this document will be most valuable to those
  46. individuals designing, implementing or administrating large NetWare
  47. internetworks. It will also be useful to individuals and organizations
  48. developing applications specifically for NetWare.
  49.  
  50. The document begins with an explanation of the packet structures defined
  51. by each protocol. It then describes the algorithms followed by
  52. workstations, routers and file servers when transmitting or receiving
  53. packets.
  54.  
  55. Protocols
  56.  
  57. Most computer networks require that information transferred between two
  58. nodes be broken up into blocks, called packets. This packetizing makes
  59. the information more manageable for the sending and receiving nodes, and
  60. any intermediate nodes (bridges or routers). In addition to the
  61. information, or data, that is being transferred, each packet contains
  62. control information used for error checking, addressing, and other
  63. purposes. The protocols being used on the network define the content of
  64. this control information. In most cases multiple protocols exist within a
  65. packet; each protocol defines a different portion of the control
  66. information for the packet and the control information for each protocol
  67. serves a different purpose. When multiple protocols are used, the control
  68. information for the highest level protocol is first placed around the
  69. data, then the control information for each subsequent protocol in the
  70. protocol stack is added to the beginning and/or end of the packet. This
  71. is called envoloping. (See Fig. 1.)
  72.  
  73. The enveloping pattern illustrated in Fig. 1 is common in the computer
  74. communications industry but the tasks assigned to each protocol in the
  75. packet differs for different vendor's implementations. In an effort to
  76. standardize the definition of protocols-and therefore make the networking
  77. implementations of different vendors interoperable-several standards
  78. organizations have been formed by governments and corporations. One of
  79. these, the International Standards Organization (ISO), has developed a
  80. model, called the Open Systems Interconnection (OSI) model, that
  81. specifies how protocols should be defined in the future. The OSI model
  82. separates the functions required for effective computer communications
  83. (such as error checking and addressing) into seven catagories, or layers.
  84. These layers are the Application, Presentation, Session, Transport,
  85. Network, Data-Link and Physical layers.
  86.  
  87. : Example of Multiple Protocols in a Packet
  88.  
  89.  Having been defined prior to the finalization of the OSI model, the
  90. protocols used by NetWare do not all correspond exactly to the OSI
  91. model's definitions. NetWare uses a variety of protocols. Some of these
  92. protocols were developed specifically for NetWare; some are used
  93. throughout the networking industry. The protocols required for
  94. communications between NetWare workstations and file servers are the
  95. following:
  96.  
  97. o    Medium-access Protocols
  98.  
  99. o    Internetwork Packet Exchange (IPX)
  100.  
  101. o    Routing Information Protocol (RIP)
  102.  
  103. o    Service Advertising Protocol (SAP)
  104.  
  105. o    NetWare Core Protocol (NCP)
  106.  
  107. Fig. 2 provides a relative mapping of the NetWare protocols-also called
  108. the NetWare protocol stack-to the OSI model; in actuality, a direct
  109. correlation to the layer boundaries of the two architectures does not
  110. exist. The NetWare protocols follow the enveloping pattern shown in Fig.
  111. 1. More specifically, the upper level protocols (NCP, SAP, and RIP) are
  112. enveloped by the IPX and IPX is subsequently enveloped by the medium-
  113. access protocol header and trailer.
  114.  
  115. : Mapping of NetWare Protocols to OSI Model
  116.  
  117. Medium-Access Protocol Implementations
  118.  
  119. A number of medium-access protocols have been defined, many of which are
  120. used with NetWare. The focus within this document is on the
  121. implementations of medium-access protocols, the most common of which are
  122. 802.5 Token-Ring, 802.3 Ethernet, Ethernet v2.0, and Arcnet. The 802.x
  123. protocols have been defined by the Institute of Electrical and Electronic
  124. Engineers (IEEE). Ethernet v2.0 was co-developed by Xerox and Digital
  125. Equipment Corporation, and Arcnet was developed by Datapoint, Inc. These
  126. medium-access protocol implementations are primarily concerned with the
  127. transport of packets from one node to another on a single network
  128. segment.
  129.  
  130. Medium-access protocols provide bit-level error checking in the form of a
  131. cyclic redundancy check (CRC). This CRC, which is appended to every
  132. packet that is transmitted, assures that 99.9999 percent of the packets
  133. successfully received will be free of corruption. In view of this level
  134. of integrity, NetWare does not provide any additional bit-level error
  135. checking within any of its upper-level protocols. (Note that bit-level
  136. error checking checks to make sure that bits within a packet have not
  137. been corrupted. The packet-level error checking discussed later checks
  138. that complete packets are not lost.)
  139.  
  140. Medium-access protocol implementations define the addressing that
  141. distinguishes each node on a NetWare network. This addressing is
  142. implemented within the hardware of each network interface card (NIC). To
  143. move a packet to the proper node on a network, a medium-access control
  144. (MAC) header is placed at the beginning of every packet. This header
  145. contains source and destination node address fields to indicate where the
  146. packet originated and where it is going. Each NIC checks the destination
  147. address in the MAC header of each packet sent on the network segment is
  148. is attached to. If the destination address matches the NIC's own address,
  149. or if the packet is a broadcast packet intended for all nodes, the NIC
  150. will copy the packet.
  151.  
  152. Bit-level error checking and node addressing are provided by the majority
  153. of medium-access protocol implementations. IBM's Token-Ring (802.5)
  154. implementation defines a method of routing called source routing. Source
  155. routing allows ring segments to be interconnected by bridges, allowing
  156. administrators to segment network traffic. This requires that each
  157. workstation maintain a table of routes to the nodes it is communicating
  158. with. Furthermore, routing information must be included in the MAC header
  159. of each packet it sends. This information instructs bridges how to
  160. properly forward each packet to its destination. Source routing can be
  161. used instead of or in conjunction with NetWare routing.
  162.  
  163. Internetwork Packet Exchange (IPX)
  164.  
  165. The IPX protocol was adopted by Novell from Xerox Network System's (XNS)
  166. Internet Datagram Protocol. IPX is a datagram, connectionless protocol
  167. that does not require an acknowledgment for each packet sent. This packet
  168. acknowledgment, or connection control, must be provided by protocols
  169. above IPX. IPX defines internetwork and intranode addressing schemes,
  170. while relying on the network hardware for the definition of node
  171. addressing.
  172.  
  173. The network number assigned in NETGEN (NetWare 2.1x) is the basis of
  174. IPX's internetwork addressing. Each network segment on a NetWare
  175. internetwork must be assigned a unique network number. This network
  176. number is used by routers to forward packets to their final destination
  177. segment.
  178.  
  179. The IPX intranode address comes in the form of socket numbers. Since
  180. several processes are normally operating within a node, socket numbers
  181. provide a sort of mail slot so that each process can distinguish itself
  182. to IPX. As a process needs to communicate on the network, it requests
  183. that a socket number be assigned to it. Any packets that IPX receives
  184. that are addressed to that socket are passed on to the process. Hence,
  185. socket numbers provide a quick method of routing packets within a node.
  186.  
  187. Novell has reserved several socket numbers for specific purposes. These
  188. are shown in Fig. 3. Since socket numbers are internal to each node,
  189. several workstations can use the same socket number at one time without
  190. any fear of confusion. All NCP requests from workstations must be
  191. addressed to socket 451h.
  192.  
  193. : Socket Numbers Used in The NetWare Environment
  194.  
  195. The network, node, and socket addresses for the both the destination and
  196. the source are held within the packet's IPX header. The IPX header is
  197. placed after the MAC header and before the packet data. (Packet data is
  198. usually the header of a higher-level protocol.)  Fig. 4 illustrates the
  199. structure of an IPX packet on an 802.3 network.
  200.  
  201. : Structure of an IPX Packet
  202.  
  203. Routing Information Protocol
  204.  
  205. The Routing Information Protocol (RIP) facilitates the exchange of
  206. routing information on a NetWare internetwork. Like IPX, the RIP was
  207. derived from XNS. However, an extra field was added to the packet
  208. structure to improve the decision criteria for selecting the fastest
  209. route to a destination. This change prohibits the straight integration of
  210. NetWare's RIP with other undeviating XNS implementations.
  211.  
  212. The single packet structure defined by the RIP allows the following
  213. exchanges of information:
  214.  
  215. o    Workstations locate the fastest route to a network number by
  216.      broadcasting a route request (represented by "Route Request" entry
  217.      on the TRACK ON screen).
  218.  
  219. o    Routers request routing information from other routers to update
  220.      their own internal tables by broadcasting a route request
  221.      (represented by "Route Request" entry on the TRACK ON screen).
  222.  
  223. o    Routers respond to route requests from workstations and other
  224.      routers.
  225.  
  226. o    Routers perform periodic broadcasts to make sure that all other
  227.      routers are aware of the internetwork configuration.
  228.  
  229. o    Routers perform broadcasts whenever they detect a change in the
  230.      internetwork configuration.
  231.  
  232. The RIP packet structure is shown in Fig. 5. This structure is enveloped
  233. within the data area of IPX. The Operation field indicates whether the
  234. packet is a request or a response. A 1 in this field indicates a request
  235. and a 2 indicates a response. The Operation field can be followed by one
  236. or more (n) sets of information, each consisting of a network number and
  237. the number of Hops and Ticks to that network number. A RIP packet can
  238. contain a maximum of 50 sets of network number information.
  239.  
  240. The term "Hops" refers to the number of routers that must be passed
  241. through to reach a network number. A "tick" is roughly 1/18 of a second
  242. (there are 18.21 Ticks in a second, to be precise). The number of Ticks
  243. measures how much time the packet takes to reach a network number. The
  244. number in this field is always at least one. The original XNS definition
  245. of the RIP did not include the Number of Ticks field. The Ticks field was
  246. added by the developers of NetWare so that the NetWare shell could
  247. estimate how long it should wait for a response from a file server. (This
  248. will be explained in the discussion of the shell's receive time-out.)
  249. Also, if multiple routes exist to a network number, a router uses the
  250. route with the shortest number of Ticks when forwarding packets to that
  251. network number.
  252.  
  253. If a RIP packet is a request for information, only the Network Number
  254. field applies; the Hops and Ticks fields are essentially nulled out. A
  255. response packet can be either a reply to a request from a router or
  256. workstation or a periodic broadcast by a router.
  257.  
  258. : RIP Packet Structure
  259.  
  260. Service Advertising Protocol (SAP)
  261.  
  262. The Service Advertising Protocol (SAP) allows service-providing nodes-
  263. such as file servers, print servers, and gateway servers-to advertise
  264. their services and addresses. The SAP makes the process of adding and
  265. removing services on an internetwork dynamic. As servers are booted up,
  266. they advertise their services using the SAP; when they are brought down,
  267. they use the SAP to indicate that their services will no longer be
  268. available.
  269.  
  270. Through the SAP, clients on the network can determine what services are
  271. available on the network and obtain the internetwork address of the nodes
  272. (servers) where they can access those services. This is an important
  273. function, since a workstation cannot initiate a session with a file
  274. server without first having that server's address.
  275.  
  276. A gateway server, for instance, will broadcast a SAP packet every 60
  277. seconds (the period defined for all servers advertising with the SAP)
  278. onto the network segment it is connected to. The SAP agent in each router
  279. on that segment copies the information contained in the SAP packet into
  280. an internal table called the Server Information table. Because the SAP
  281. agent in each router keeps up-to-date information on available servers, a
  282. client wanting to locate the gateway server can access a nearby router
  283. for the correct internetwork address.
  284.  
  285. Like the RIP, the SAP uses IPX and the medium-access protocol for its
  286. transport.  Fig. 6 illustrates the SAP packet structure. The first field
  287. defines the operation that the packet is performing. The packet can
  288. perform five different operations:
  289.  
  290. o    A workstation request for the name and address of the nearest server
  291.      of a certain type (this is represented by a "Get Nearest Server"
  292.      entry on a TRACK ON screen.)
  293.  
  294. o    A general request, by a router, for the names and addresses of
  295.      either all the servers or all the servers of a certain type on the
  296.      internetwork ("Send All Server Info." on TRACK ON.)
  297.  
  298. o    A response to either a "Get Nearest Server" request ("Give Nearest
  299.      Server" entry on TRACK ON) or a general request
  300.  
  301. o    Periodic broadcasts by servers and routers
  302.  
  303. o    Changed server information broadcasts
  304.  
  305. Following the Operation field are one or more sets of fields. Each set
  306. includes a service type server name, network address, node address,
  307. socket number and a number of Hop fields. If the packet contains
  308. information about more than one server, it will contain more than one set
  309. of fields (n sets of fields). Each SAP packet can contain information
  310. about up to seven servers.
  311.  
  312. : SAP Packet Structure
  313.  
  314. NetWare Core Protocol
  315.  
  316. The NetWare Core Protocol (NCP) makes interaction between clients and
  317. file servers possible by defining two aspects of their interaction,
  318. connection control and service request encoding. Because the creation and
  319. handling of NCP packets is done by the NetWare shell or NetWare Requester
  320. for OS/2, you do not need an in-depth understanding of the NCP,but you
  321. should  have some idea of what the protocol does.
  322.  
  323. The NCP provides its own session control and packet-level error checking
  324. instead of relying on other protocols for these functions. Consequently,
  325. the modularity of the protocol stack is reduced but, in the long run, a
  326. more efficient mechanism is attained.  Fig. 7 shows the general structure
  327. of an NCP packet. When a client establishes a session with a file server,
  328. it is assigned a connection number. This connection number must be
  329. included in all subsequent service requests that the client submits. The
  330. connection number allows the file server to keep track of which clients
  331. are making requests, for response and security purposes.
  332.  
  333. :  Structure of an NCP Packet
  334.  
  335. Each NCP request packet submitted on a given connection must be assigned
  336. a sequence number by the client. The first request following the
  337. establishment of the connection is assigned the number 1; that number is
  338. incremented by one for each subsequent request. When a file server
  339. finishes processing a request, it places the sequence number for that
  340. request in the response packet. Hence, the client can make sure that it
  341. is receiving the correct responses for the requests that it submits.
  342.  
  343. Each of the services available at a NetWare file server has been assigned
  344. a number. When it needs to submit a request to a server, the shell or
  345. requester places the number-as well as any additional information that
  346. might be needed-in the service code field of the NCP packet. Depending on
  347. the service being requested, the NCP might provide additional fields for
  348. the shell to give specific instructions to the file server-such as which
  349. part of a file to read. The file server might report any problems or
  350. errors that might have occurred while processing the request in these
  351. additional fields.
  352.  
  353. Packet Delivery
  354.  
  355. On a NetWare network, the successful delivery of a packet depends on the
  356. proper addressing of the packet and the internetwork configuration
  357. (whether it is a single segment network or series of segments
  358. interconnected by repeaters, bridges and/or routers). The addressing of
  359. the packet is handled in its medium-access protocol and IPX address
  360. fields. To send a packet to another node, the sending node must know the
  361. full internetwork address (network, node, and socket) of the node it
  362. desires to send to (the destination node). (The process of obtaining
  363. another node's address is explained in the section entitled "Establishing
  364. a Connection.") Once the sending node has the destination node's address
  365. it can proceed with addressing the packet. The way the MAC header of that
  366. packet is addressed, however, depends on whether the sending and
  367. destination nodes are separated by a router.
  368.  
  369. In the event that the sending and destination node are on the same
  370. network segment-that is, they both have the same IPX network address-the
  371. sending node addresses the packet in the following way: The node address
  372. of the destination node is placed in the MAC header destination address
  373. field. The node address of the sending node is placed in the MAC header
  374. source address field. The full internetwork address of the destination
  375. node is placed in the IPX header destination address fields. The full
  376. internetwork address of the sending node is placed in the IPX header
  377. source address fields.
  378.  
  379. Fig. 8 shows an example of two nodes that are connected to network number
  380. AA. The sending node (node 01) sending a packet to node 02. The sending
  381. node places node address 02 in the destination field and node address 01
  382. in the source field of the MAC. In the destination address fields of the
  383. IPX header, the sending node places AA, 02 and 451 (the full internetwork
  384. address of the receiving node). The sending node places its own
  385. internetwork address of AA, 01 and 4003 in the source address fields of
  386. the IPX header.
  387.  
  388. : Transmission to Same Network Segment (No Routing Required)
  389.  
  390. Network Interconnection Devices
  391.  
  392. The addressing method depicted in Fig. 8 is used when the two nodes
  393. reside on the same physical segment (or ring) or if they reside on
  394. separate segments interconnected by repeaters or bridges. A repeater is a
  395. Physical Layer (OSI model) device that amplifies the signal of one
  396. segment onto one or more other segments. Repeaters are used to extend the
  397. maximum possible distance between end nodes on a segment. They are
  398. completely transparent to the sending and receiving nodes.
  399.  
  400. A bridge is a Data-Link Layer device used to interconnect cable segments
  401. locally or over wide area network links. Instead of simply amplifying a
  402. signal as repeaters do, bridges retransmit packets received on one
  403. segment onto another segment. Bridges are considered Data-Link Layer
  404. devices because they examine the data-link (or MAC header) portion of
  405. packets before retransmitting them onto other segments. There are two
  406. predominant types of bridges, transparent bridges and source routing
  407. bridges.
  408.  
  409. Transparent bridges interconnect two or more segments. They examine the
  410. MAC header source and destination fields of every packet transmitted on
  411. their connected segments. From the source address fields of packets,
  412. these bridges develop a table of the nodes that reside on (or are
  413. accessible through) each of their connected segments. With this table of
  414. information, a bridge can determine whether packets should be passed on
  415. to other segments.
  416.  
  417. Fig. 9 shows a transparent bridge connected to two separate segments.
  418. After examining the packets transmitted on both segments it creates a
  419. table that tracks which nodes exist on each segment. With this table, the
  420. bridge can filter unnecessary traffic. For instance, if node 1 sends a
  421. packet to node 5, the bridge will not retransmit that packet on its port
  422. B. It will, however, retransmit packets sent from node 1 to node 7. Like
  423. repeaters, transparent bridges-as their name implies-are transparent to
  424. the sending and receiving nodes.
  425.  
  426. : Example Transparent Bridge
  427.  
  428. Routers
  429.  
  430. Routers, like bridges, interconnect different network segments; however,
  431. the operation of routers and bridges is quite different. Routers by
  432. definition are network layer devices. (See Fig. 10.) In other words,
  433. routers receive their instructions for forwarding a packet from one
  434. segment to another from a network layer protocol. The network layer
  435. protocol that routers use in the NetWare environment is IPX. NetWare-
  436. compatible routers are available with NetWare or from third-party
  437. manufacturers. The routers that come packaged with NetWare have actually
  438. been misnamed bridges in the past. The NetWare routers include what has
  439. been called the internal bridge within NetWare file servers and external
  440. bridge installed at workstations. Novell has officially renamed these two
  441. devices internal router and external router.
  442.  
  443. NetWare-compatible routers may be configured to interconnect two or more
  444. segments. Each of these segments, however, must be assigned a unique IPX
  445. network number to distinguish it from other segments on the internetwork.
  446. A segment's network number must be configured into each of the routers
  447. connected to that segment. The network number serves as a common address
  448. for each node connected to a segment.
  449.  
  450. : OSI Representations of Network Devices
  451.  
  452. Packet Routing
  453.  
  454. When a node wants to send information to another node, it must first have
  455. network address-as well as the node address-of the destination node. If
  456. the two nodes have the same network number (reside on the same segment),
  457. the sending node can simply send packets to the destination node using
  458. method illustrated in Fig. 8. On the other hand, if the two nodes have
  459. different network numbers (reside on different network segments), the
  460. sending node must find a router on its own segment that can forward
  461. packets to the destination node's network segment. To find this router,
  462. the workstation broadcasts a RIP packet requesting the fastest route to
  463. the destination node's network number (RIP requests are discussed in more
  464. detail later in the section entitled "Establishing a Connection". This
  465. RIP request is responded to by the router residing on the sending nodes
  466. segment with the shortest path to the desired segment; in the response,
  467. the router includes its node address.
  468.  
  469. Once the sending node receives the router's node address, it is prepared
  470. to send packets to the destination node. The sending node addresses these
  471. packets in the following way: It places the destination node's
  472. internetwork address (network, node and socket number) in the destination
  473. address fields of the IPX header. Next the sending node places its own
  474. internetwork address in the source address fields of the IPX header. Then
  475. the sending node places the node address of the router-the one that
  476. responded to the RIP request-in the destination address field of the MAC
  477. header. The sending node places its own node address in the source
  478. address field of the MAC header. (See Fig. 11.)
  479.  
  480. : Packet Addressing Through a Router
  481.  
  482.  When a router receives a packet to be routed, it can take one of two
  483. possible actions. If the packet is destined for a network number that the
  484. router is directly connected to, the router will place the destination
  485. node address from the IPX header in the destination address field of the
  486. MAC header, place its own node address in the source address field of the
  487. MAC header, and transmit the packet. (See Fig. 11.)
  488.  
  489. If the router is not directly connected to the segment that the final
  490. destination node resides on, however, it will send the packet to the next
  491. router in the path to the destination node. To forward the packet to
  492. another router, the router will place the node address of that other
  493. router in the destination address field of the MAC header. The router
  494. will place its own node address in the source address field of the MAC
  495. header. The router leaves the IPX header as initially set by the sending
  496. node and sends the packet.
  497.  
  498. Routing Information Administration
  499.  
  500. To forward packets by the best possible route, NetWare routers maintain a
  501. Routing Information table that holds information about all the network
  502. segments on the internetwork.  Fig. 12 gives an example of a Routing
  503. Information table (only the fields  pertinent to this discussion have
  504. been included). Each entry in the Routing Information table gives the
  505. router forwarding information for a network segment.
  506.  
  507. : Portion of Routing Information Table
  508.  
  509. The first field contains the network numbers for segments that the router
  510. is currently aware exist. The router simply matches the destination
  511. network number in the packet's IPX header with an entry in this field to
  512. get its forwarding instructions for the packet. The second field
  513. indicates the number of routers that must be traversed to reach the
  514. network segment.
  515.  
  516. An estimate of the time necessary to reach the destination segment is
  517. recorded in the third field. The initial time estimate for a segment is
  518. the responsibility of the driver directly connected to it. This driver
  519. reports this estimate to its router. This time estimate is used by the
  520. router in its periodic broadcasts to indicate the time necessary to
  521. deliver a packet to a node on that segment. The method that drivers use
  522. for estimating the time delay on a segment depends on the segment type.
  523. For local segments with more than 1 Mb/sec of bandwidth (Token-Ring,
  524. Ethernet, Arcnet, and so on), the driver makes the assumption that
  525. delivery time is one tick. For remote segments (T1, 64 kbps, X.25, and
  526. asynchronous), the driver will periodically poll to determine the current
  527. time delay. For instance, the delay for a T1 link normally ranges from
  528. six to seven Ticks. If this delay changes, the driver will inform its
  529. router. As information about the segment is passed along throughout the
  530. network (by way of periodic broadcasts), routers will add any additional
  531. delay that they impose to the initial time estimate for the segment.
  532.  
  533. The NIC field of the Routing Information table records which NIC in the
  534. router the network segment can be reached through. The Immediate Address
  535. field contains the node address of the router that can forward packets to
  536. each segment. If the segment is directly connected to the router, this
  537. field will remain empty. The "Net Status" field indicates whether the
  538. segment is directly connected to the router and whether the segment is
  539. considered reliable. The final field is used to make sure that
  540. information about the segment is current.
  541.  
  542. For NetWare versions prior to 2.15c, the Routing Information table keeps
  543. a list of all alternate routes for each network number in case the
  544. primary shortest route to a network number goes down. In other words, if
  545. the router can reach the segment through more than one of its NICs, it
  546. will make a record of both routes. The fastest route, the one that
  547. requires the least number of Ticks, will always be used as the primary
  548. route. NetWare versions after 2.15c maintain alternate routes only if
  549. these alternate routes require the same amount of Ticks to reach the
  550. segment as the primary route. This reduces the size of the Routing
  551. Information table.
  552.  
  553. Routing Information Broadcasts
  554.  
  555. On an internetwork, routers are constantly exchanging information with
  556. each other to make sure that their Routing Information tables reflect up-
  557. to-the-minute changes in the layout of the internetwork. To accomplish
  558. this, routers transmit a series of broadcasts from the time they come up
  559. until they are brought down. These broadcasts can be separated by the
  560. time at which they occur:
  561.  
  562. o    Initial broadcast of directly connected network segments
  563.  
  564. o    Initial request to receive routing information from other routers
  565.  
  566. o    Periodic broadcasts (every 60 seconds) of current list of active
  567.      network numbers
  568.  
  569. o    Broadcast of change in internetwork configuration
  570.  
  571. o    Final broadcast when brought down
  572.  
  573. Although the broadcasts occur at different times and, for the most part,
  574. contain different information, they must follow two important rules.
  575. First, each broadcast must be a local broadcast, addressed so that it
  576. will not be immediately passed on, intact, by the routers that receive
  577. it. This reduces the network traffic created by these information
  578. exchanges. Second, routers must follow a "best information" algorithm
  579. when providing information to other routers through a broadcast (since
  580. the second broadcast listed above is a request for information, this rule
  581. does not apply to it).
  582.  
  583. Best Information Algorithm
  584.  
  585. The purpose of routing information broadcasts is twofold: to allow a
  586. router to share its current impression of the layout of internetwork with
  587. other routers, and to inform the routers of an internetwork change so the
  588. routers can update their tables. A router sends routing information
  589. broadcasts to every network segment that it is directly connected to. The
  590. first rule of the best information algorithm dictates that a router about
  591. to broadcast to a particular network segment should not include any
  592. information about other segments that it has received from the segment to
  593. which the information is being sent.
  594.  
  595. For example, if the router within server FS2 in Fig. 13 is going to
  596. broadcast a routing information broadcast to network segment BB, it will
  597. not include information that it received from FS1 about network segment
  598. AA. If it did, someone on segment BB might erroneously conclude that
  599. there are two paths to segment AA-one through FS1 and another through
  600. FS2.
  601.  
  602. : The Best Information Algorithm
  603.  
  604. The best information algorithm also states that routers should not
  605. include information about the network segment that they are sending
  606. routing information broadcasts to. For example, FS2 would not include
  607. information about BB in its broadcast onto BB.
  608.  
  609. Taking these rules into account, the information that FS2 would broadcast
  610. onto segment BB would be information about segments CC and DD.
  611.  
  612. Initial and Periodic Broadcasts
  613.  
  614. When a router is first brought up, it places the network numbers of its
  615. directly connected segments into its Routing Information table. Then,
  616. following the best information algorithm, the router sends a routing
  617. information broadcast to inform the routers on its directly connected
  618. segments of the segments that the router will be making available. The
  619. router next broadcasts a request to each of its directly connected
  620. segments for information about all other network segments that exist on
  621. the internetwork. This request is responded to by all the routers (each
  622. using the best information algorithm) on these directly connected
  623. segments. The router places the information gleaned from these responses
  624. in its Routing Information table. Fig. 14 illustrates this initial
  625. sequence of broadcasts.
  626.  
  627. : Sequence Used to Build and Maintain Routing Information Table
  628.  
  629. Once the router has performed these initial broadcasts and updated its
  630. Routing Information table, it is ready to accept routing requests and
  631. route packets. In addition to routing packets, the routers will broadcast
  632. all the information in their Routing Information table (except that
  633. excluded by the best information algorithm) to each of their connected
  634. network segments every 60 seconds. Routers perform these periodic
  635. broadcasts to make sure that all routers on the internetwork remain
  636. synchronized.
  637.  
  638. Because of lower bandwidth of X.25 and asynchronous links, routers do not
  639. perform 60 second broadcasts on these links-only initial broadcasts,
  640. changed information broadcasts and final broadcasts are sent over these
  641. links.
  642.  
  643. Changed Information Broadcasts
  644.  
  645. When a router receives information that causes it to change its Routing
  646. Information table, the router will immediately pass that information on
  647. to its other directly connected network segments except the segment that
  648. the router received the information from. If a new network segment comes
  649. up or an existing segment goes down, all the routers on the internetwork
  650. will learn about the change in a short amount of time.
  651.  
  652. The primary cause of a change in the internetwork's configuration are
  653. file servers and external routers coming up or going down. If a router
  654. needs to be brought down (using the DOWN command at the console) the
  655. router will inform its directly connected segments of the fact before
  656. discontinuing service. The router issues broadcasts (as always, using the
  657. best information algorithm) that indicate that the network segments which
  658. the router had made available will no longer be accessible through this
  659. router. (See Fig. 15.)
  660.  
  661. : Routers Inform Other Routers When Going Down
  662.  
  663. The Process of Aging
  664.  
  665. If a router goes down due to a hardware failure, power glitch, or power
  666. outage, other routers will not be notified that a change has occurred. To
  667. safeguard against this eventuality an "aging" mechanism has been built in
  668. to NetWare routers.
  669.  
  670. Routers maintain a timer for each entry in their Routing Information
  671. table. Every time that information is received concerning the entry, the
  672. timer is reset to zero. If the timer reaches three minutes, the router
  673. assumes that the route to the network number is down and broadcasts that
  674. fact to its other segments. Since this information is new or changed, the
  675. routers that receive the information will pass it on immediately and the
  676. change will quickly permeate the internetwork.
  677.  
  678. Service Advertising
  679.  
  680. Using the SAP, servers on a NetWare network can advertise their services
  681. and addresses. The information that these servers broadcast is not
  682. directly used by clients but instead collected by a SAP agent within each
  683. NetWare router on the server's segment. The SAP agents store this
  684. information in a Server Information table and, if they reside within a
  685. server, in their server's bindery. The clients can then contact the
  686. nearest SAP agent or file server for server information.
  687.  
  688. The SAP broadcasts that servers perform are local broadcasts and,
  689. therefore, only received by SAP agents on their connected segments.
  690. Consequently, SAP agents periodically broadcast their server information
  691. so that all SAP agents on the internetwork have information about all
  692. servers that are active on the internetwork-this is the same broadcast
  693. method used by routers to distribute and exchange network number (RIP)
  694. information.
  695.  
  696. Server Information Table
  697.  
  698. The table that SAP agents use to store information received in SAP
  699. broadcasts is called the Server Information table. If all SAP agents on
  700. the internetwork are exchanging SAP information properly, each agent's
  701. Server Information table should have information about all the servers on
  702. the internetwork-thus providing clients with nearby access to the
  703. addresses of all the servers on the internetwork. Fig. 16 illustrates
  704. some of the more pertinent fields of the Server Information table.
  705.  
  706. : Portion of a NetWare Router's Server Information Table
  707.  
  708. The Server Address field contains the service's full address, including
  709. network, node, and socket addresses. The Server Type field holds a number
  710. designating what type of service the server provides. One server might
  711. provide printing services as opposed to file services, for instance. The
  712. server type designation used to assign numbers to the different services
  713. that servers provide is part of a more generic scheme used in the bindery
  714. to classify objects. Some of the more common object types are shown in
  715. Fig. 17.
  716.  
  717. : Object Types
  718.  
  719. The Time Since Changed field is used for aging servers that have
  720. unexpectedly gone down. The NIC that the information about the server was
  721. received on is specified in the NIC Number field.
  722.  
  723. The way that information within the Server Information table is stored
  724. makes sequential access (send me information about all servers with
  725. server type 4, for instance) possible but makes database access (send me
  726. information about server NCS) very difficult. Therefore, the Server Name,
  727. Server Address, Server Type and Hops to Server fields of the Server
  728. Information table are periodically copied to file server's binderies by
  729. internal SAP agents-SAP agents that reside within file servers. With this
  730. information stored in file server binderies, any client that has a
  731. connection with a NetWare file server can query the bindery for the
  732. address of a specific server.
  733.  
  734. Server Information Administration
  735.  
  736. When a file server is first brought up, its internal SAP agent places the
  737. name of the server in the agent's Server Information table. The SAP agent
  738. then sends a SAP broadcasts onto each of its directly connected segments
  739. to inform the SAP agents on those segments that a new server has become
  740. available. (See Fig. 18.)
  741.  
  742. : Sequence Used to Build and Maintain Server Information Table
  743.  
  744. After performing its initial broadcasts, the SAP agent broadcasts a
  745. request onto each of its directly connected segments for information
  746. about other servers that exist on the internetwork. These requests are
  747. responded to by all the SAP agents on these directly connected segments.
  748. The SAP agent places the information received in these responses in its
  749. Server Information table. Thereafter, the SAP agent performs broadcasts
  750. about the servers that it is aware of every 60 seconds (except on
  751. asynchronous and X.25 links). illustrates these initial and periodic
  752. broadcasts.
  753.  
  754. As with routing information broadcasts, all server information broadcasts
  755. are local broadcasts and are subject to the best information algorithm.
  756. Any changes in server information are passed on immediately to ensure
  757. current information across the internetwork. The router applies the aging
  758. process to its Server Information table entries in case any servers
  759. become unavailable. Finally, if the router is brought down, it will
  760. indicate to its directly connected segments that the servers the router
  761. has been advertising will no longer be available. (See Fig. 19.)
  762.  
  763. : FS2 Brought Down
  764.  
  765. File Server Addressing
  766.  
  767. Value-added servers, such as gateway and print servers, normally contain
  768. only one network adapter and will use the address of that adapter as the
  769. address they advertise in their periodic SAP broadcasts. NetWare file
  770. servers, on the other hand, may contain multiple adapters. This requires
  771. that they use some sort of convention for advertising the address of
  772. their file services; the convention used for this addressing differs for
  773. 286- and 386-based servers. Within the 286-based environment, the file
  774. services of a server are addressed with respect to its NIC A. This
  775. convention guarantees consistency since every server will have at least
  776. one network adapter installed. (See Fig. 20.) If you enter an SLIST
  777. command, the address you see for 286-based servers is the network and
  778. node address assigned to the server's NIC A.
  779.  
  780. : Addressing of File Services on a 286-based NetWare File Server
  781.  
  782. In the NetWare 386-based servers, an internal network has been added for
  783. the addressing of internal services, as shown in Fig. 21. This different
  784. method of addressing requires that an internal network number be assigned
  785. when a NetWare 386-based file server is brought up.
  786.  
  787. : Addressing of File Services in NetWare 386-based Server
  788.  
  789. Fig. 22 displays an SLIST screen that contains 286- and 386-based
  790. servers. The 386-based servers can be distinguished by their node address
  791. of one. This node address is assigned to the file services on the
  792. internal network number. The implementation of redundant cabling systems
  793. with 286-based servers is discussed in a later section.
  794.  
  795. : Example SLIST Listing
  796.  
  797. Client-Server Interaction
  798.  
  799. The NetWare shell facilitates client-server communications for DOS-based
  800. workstations. In a typical client-server interaction, one station (the
  801. client) requests services from another station (the server). Through the
  802. shell, DOS-based applications can request file services (such as writing
  803. to and reading from files) from NetWare file servers. At the workstation,
  804. the shell, the user application, and the user together act as the client
  805. requesting file services; the NetWare file server acts as the server
  806. providing file services.
  807.  
  808. The shell, then, is the liaison between the client (the user application)
  809. and the server. The shell performs the tasks necessary to request file
  810. services from a NetWare file server: for example, establishing a
  811. connection with the file server, maintaining the connection, and
  812. terminating the connection.
  813.  
  814. The NetWare shell is a terminate-and-stay-resident (TSR) program called
  815. NETx.COM (where x depends on the version of DOS being run). NETx.COM is
  816. loaded into a NetWare workstation's memory when the workstation is
  817. booted. Before you load the shell, however, you must load another TSR
  818. called IPX.COM
  819.  
  820. IPX.COM
  821.  
  822. Novell's IPX protocol serves as the communications link with the NIC
  823. installed in the workstation. At installation, a customized version of
  824. IPX.COM is generated for each workstation by linking in a driver written
  825. specifically for the NIC that resides in that workstation. Once IPX.COM
  826. is loaded, any workstation programs, including the shell, can communicate
  827. on the network through NetWare's IPX protocol.
  828.  
  829. In addition to interfacing with the NIC, IPX.COM performs several
  830. communication-related functions. For example, it manages the IPX sockets
  831. used with the workstation. The shell and other applications access
  832. IPX.COM to open and close IPX sockets. When the workstation receives an
  833. IPX packet, IPX.COM checks which socket the packet is addressed to and
  834. passes the packet to the program having that socket open.
  835.  
  836. Finally, IPX.COM is responsible for determining the address of the
  837. network segment to which the workstation is physically connected. The
  838. workstation's network number, along with its node address, make up the
  839. workstation's full internetwork address.
  840.  
  841. IPX can determine the workstation's network number in one of two ways. In
  842. the first method, IPX.COM watches for any RIP broadcasts sent on the
  843. network. Since RIP packets are not forwarded to other network segments,
  844. IPX knows that this type of broadcast originated on the segment to which
  845. the workstation is directly connected. IPX simply reads the source
  846. network address contained in the IPX header of a RIP broadcast to
  847. determine the workstation's network number.
  848.  
  849. IPX uses an alternate method if the shell requests a route to a network
  850. number before IPX can determine the workstation's network number from a
  851. RIP broadcast. In this case, IPX broadcasts a Get Local Target request,
  852. which requests the fastest route to the destination network number
  853. requested by the shell. Upon receiving a response, IPX.COM checks the
  854. source network number in the IPX header of the response packet. This
  855. source network number (the network number of the router that responded to
  856. the Get Local Target request) is the workstation's network number.
  857.  
  858. The NetWare Shell
  859.  
  860. The shell (NETx.COM) acts as the interface between user applications and
  861. NetWare file servers. As user applications make requests, the shell
  862. determines whether the requests should be handled locally by DOS or sent
  863. to a server on the network. If the shell determines that the request
  864. should be sent to a network server, the shell formulates a request
  865. packet, hands it to IPX.COM for transmission, and waits for a response.
  866.  
  867. Prior to submitting any requests to a server, the shell must establish a
  868. connection with that server. The shell can establish a connection to a
  869. server in two ways: When the shell is first loaded at the workstation, it
  870. logically attaches to the first server that responds (usually the server
  871. nearest to the workstation). The LOGIN and ATTACH command line utilities,
  872. when executed, also establish a server connection.
  873.  
  874. To establish a connection, the workstation and the server must exchange
  875. several packets: a packet requesting that a connection number be assigned
  876. to the shell, and another proposing the maximum packet size that will be
  877. allowed in the interaction between the file server and the shell. Before
  878. sending these initial packets, the shell needs the address of the server
  879. and a route to the server.
  880.  
  881. Getting a Server's Address
  882.  
  883. To get a server's address, the shell can use the SAP to broadcast a
  884. request for the address of the nearest server-a Get Nearest Server
  885. request. All routers on the workstation's network segment having
  886. information about the nearest server respond to the Get Nearest Server
  887. request. Each response contains the nearest server's name, its full
  888. internetwork address, and the number of Hops required to reach the
  889. server. (See Fig. 23.)
  890.  
  891. : Getting the Address of the Nearest File Server
  892.  
  893.  When first loaded at a workstation, the shell issues a Get Nearest
  894. Server request to establish an initial connection to a file server. If
  895. the shell loses its connections with all file servers, it resorts to the
  896. Get Nearest Server request method to re-establish a server connection.
  897.  
  898. A second method the shell uses to get a server's address is to use the
  899. NCP to access a file server's bindery. The bindery is a database within
  900. NetWare file servers that contains information about many network
  901. entities, including users, groups, and servers.
  902.  
  903. Because the shell must already have a server connection before it can
  904. access the server's bindery, the shell can use this second method only
  905. after it has established an initial connection to a file server. The
  906. LOGIN and ATTACH utilities use this method, as does the new "preferred
  907. server" shell (version 3.01). These utilities allow the user to specify a
  908. specific file server name, and then these utilities use that name to scan
  909. the bindery for the server's address.
  910.  
  911. Getting a Route to a Server
  912.  
  913. Once the shell has the address of a server, it needs a route to that
  914. address. The shell uses this route for all subsequent communications with
  915. the server for the duration of the connection.
  916.  
  917. To obtain a route, the shell submits a Get Local Target request to
  918. IPX.COM. IPX first compares the network number of the desired server to
  919. the workstation's network number. If these two numbers are the same, IPX
  920. tells the shell to send requests directly to the server (without going
  921. through an intermediate router).
  922.  
  923. If the network number the shell submits and the workstation's network
  924. number are not the same, IPX broadcasts a RIP request for the fastest
  925. route to the submitted network number. Whichever router on the
  926. workstation's network segment has the shortest route to the network will
  927. respond to the request. More than one router might respond if several
  928. routers have a route equal to the shortest route. IPX accepts only the
  929. first router's response, discarding all others.
  930.  
  931. IPX then returns to the shell the node address of the first router that
  932. responded. The shell places the node address of this router in the MAC
  933. header of a Create Connection request packet; it addresses the IPX header
  934. of the request packet to the file server it wants to connect to. With the
  935. packet addressed in this fashion, the router will receive the packet
  936. first, check the IPX destination address, and forward the packet toward
  937. the network number on which the file server resides. (See Fig. 24.)
  938.  
  939. : Requesting the Fastest Route to an Address
  940.  
  941. Establishing an Initial Connection
  942.  
  943. To establish its connection to a file server, the shell uses a
  944. combination of the SAP, the RIP, and the NCP. The sequence followed is
  945. slightly different for the new "preferred server" shell (version 3.01)
  946. than it is for previous shell versions.
  947.  
  948. Fig. 25 shows the steps taken by pre-v3.01 shells to make a connection
  949. with a file server. The first column represents the call or packet sent.
  950. The second column lists the source, or sender, of the packet. The third
  951. column lists the addressee of the packet. The final column indicates the
  952. protocol used for the packet.
  953.  
  954. : Initial Connection Sequence for NetWare Shells
  955.  
  956. We have already seen how the first four steps work. In steps 1 and 2, the
  957. shell obtains the address of the nearest server. Step 3 is IPX.COM's
  958. request for the fastest route to the address that the shell received in
  959. step 2. Step 4 is the response by all routers with the shortest route to
  960. that segment.
  961.  
  962. Steps 5 through 8 show the packets exchanged between the shell and the
  963. server to establish the initial connection. Once this connection is made,
  964. the shell moves to the background (terminates-and-stays-resident) and
  965. returns the DOS prompt to the user. The user can then execute LOGIN.EXE
  966. to log in to the connected server or to another server.
  967.  
  968. The Preferred Server Shell
  969.  
  970. The preferred server shell (v3.01 and above) features several additional
  971. functions not offered by older versions of the shell. As its name
  972. implies, the preferred server shell allows users to specify, either at
  973. the command line or in the SHELL.CFG file, which server they would like
  974. to connect with. Whether or not a preferred server is specified, the
  975. preferred server shell goes through the same initial eight steps as the
  976. old shells.
  977.  
  978. If the server the shell connects to during the initial eight steps is not
  979. the preferred server the user specified, the preferred server shell
  980. performs several additional steps to establish a connection with the
  981. specified server. (See Fig. 26.)
  982.  
  983. For instance, if the workstation in Fig. 24 initially connects to FS1 and
  984. the user specified FS3 as the preferred server, the shell will follow a
  985. sequence similar to that shown in Fig. 25. As you can see in step 9, the
  986. preferred server shell uses the bindery method of acquiring the server's
  987. address.
  988.  
  989. : Connection Sequence for the Preferred Server Shell
  990.  
  991. Steps 11 and 12 of this preferred server sequence are not always
  992. required. If the preferred server resides on the same network segment as
  993. the workstation, the shell skips these two steps and sends the Create
  994. Connection request directly to the server. The shell destroys the
  995. connection with the initial server once it has successfully established
  996. the connection with the preferred server.
  997.  
  998. Another major difference between old shells and the preferred server
  999. shell involves the receipt of Give Nearest Server responses. Older shells
  1000. accept the first Give Nearest Server response they receive and ignore all
  1001. subsequent responses. Preferred server shells accept the first response
  1002. also, but save the next four Give Nearest Server responses in case a
  1003. connection cannot be made to the first server.
  1004.  
  1005. Servers respond to Get Nearest Server requests even if they have no free
  1006. connections. Consequently, older shells fail to establish a connection
  1007. (steps 5 and 6 of Fig. 25) if the first Give Nearest Server response they
  1008. receive is from a server with no free connections. The preferred server
  1009. shells, on the other hand, can refer to the next saved Give Nearest
  1010. Server response if the current attempt to establish a connection fails.
  1011.  
  1012. LOGIN.EXE
  1013.  
  1014. Users can run LOGIN.EXE at any time after they have established a
  1015. connection to a NetWare file server. LOGIN submits the user's name and
  1016. password to the file server for verification. It also establishes a new
  1017. server connection if the user specifies a file server in the LOGIN
  1018. command.
  1019.  
  1020. If the server specified at the command line is not the one the shell is
  1021. already connected to, LOGIN follows the steps outlined in Fig. 27. Once
  1022. these steps are completed, LOGIN verifies the username and password. If
  1023. the server specified at the command line is located on the same segment
  1024. as the workstation, steps 3 and 4 are not necessary.
  1025.  
  1026. : Additional Steps Performed by LOGIN.EXE
  1027.  
  1028.  ATTACH.EXE uses the same sequence as that described for LOGIN.EXE when
  1029. establishing connections to a file server.
  1030.  
  1031. Connection Management
  1032.  
  1033. Communication between any two workstations requires a certain amount of
  1034. responsibility on both sides to ensure that no information is lost. NICs
  1035. maintain error checking at the bit level in the NetWare environment. File
  1036. servers and workstation shells  handle packet- and session-level error
  1037. checking; each maintains a table to handle this level of error checking.
  1038. The NCP governs the way that the connection control information is
  1039. exchanged. (It is a common misconception that SPX is used for packet
  1040. level error checking between workstations and servers; however, SPX is
  1041. only used for peer-to-peer interaction.) Every NCP packet submitted to a
  1042. NetWare file server by a client must have a connection number and
  1043. sequence number attached to it. The connection number is the number that
  1044. client was assigned by the file server when the connection was
  1045. established. The sequence number identifies each packet so that both the
  1046. server and the shell can determine when a packet is lost.
  1047.  
  1048. The Shell's Connection Table
  1049.  
  1050. NETx.COM (the shell) can support up to eight server connections
  1051. concurrently. NETx.COM maintains a connection table to track these
  1052. connections. (See Fig. 28.) Within each entry in this table, the shell
  1053. stores the name and full internetwork address of the server it is
  1054. connected to. If the shell is forwarding packets through an intermediate
  1055. router to the server, the node address of that router will be stored in
  1056. the Router's Node Address field. The shell's connection number and packet
  1057. sequence number are also in the table. The sequence number is set to zero
  1058. when the connection is first established and incremented with each new
  1059. request.
  1060.  
  1061. : Portion of Shell's Connection Table
  1062.  
  1063. The shell's connection table also maintains two time-outs. One time-out
  1064. is the maximum time that the shell will wait for a response from the
  1065. server before resending a request packet. This time-out is based on an
  1066. estimate of the time (in ticks) needed to deliver a packet to the server.
  1067. This time estimate is provided by the router in its Give Immediate
  1068. Address response. (If the workstation and the server are on the same
  1069. segment, this value is set to one tick.) The shell multiplies this
  1070. estimate by 16 and adds 10 ticks to the result to set its maximum time-
  1071. out for communications with that server.
  1072.  
  1073. The Receive Time-Out is a dynamic time-out that is originally set to four
  1074. times the time estimate (received in the Give Local Target response) plus
  1075. 10 ticks.
  1076.  
  1077. Once initially set, the receive time-out adjusts up or down to adapt to
  1078. changing network conditions. The receive time-out is increased if the
  1079. shell issues a request to a server and does not receive a response within
  1080. its current receive time-out. The receive time-out is multiplied by one
  1081. and one-half when the first retry to the server is issued. It remains at
  1082. this new value for all subsequent retries on the request and for use on
  1083. the next request. If the next request requires a retry, the receive time-
  1084. out will be increased again. The receive time-out will continue to be
  1085. increased in this fashion until it reaches the maximum time-out.
  1086.  
  1087. The shell decreases the receive time-out each time that the shell does
  1088. not have to issue a retry to a request. To decrease the receive time-
  1089. out, the shell takes the time necessary to receive a response to the last
  1090. request-the request that didn't require a retry-and multiplies that value
  1091. by two and adds 10 Ticks to it. The shell sets the new receive time-out
  1092. to the average of this calculated value and the current receive time-
  1093. out.
  1094.  
  1095. The number of times that the shell will resend a request to a server is
  1096. determined by a number called the IPX Retry Count. If this count is
  1097. exceeded the shell will give up and present the user with a "Network
  1098. error on server xxxxx. Error xxxxx from network. Abort, Retry?" message.
  1099. A default for this retry count exists for all drivers. This default
  1100. differs from driver to driver but is generally between 20 and 40. The
  1101. "IPX RETRY COUNT = xx" option for the SHELL.CFG files allows the default
  1102. IPX retry count to be modified; however, some drivers will ignore this
  1103. entry in the configuration file and leave the retry count at their
  1104. default.
  1105.  
  1106. The File Server Connection Table
  1107.  
  1108. The file server connection table, shown in part in Fig. 29, allows the
  1109. server to keep information about each of the clients that it is
  1110. servicing. The address fields are used for addressing response packets
  1111. and for security purposes. When a packet arrives with a service request,
  1112. it contains the connection number assigned to the sender. The server
  1113. matches the packet's IPX source address (network, node, socket) with the
  1114. address registered for that connection number. If the addresses don't
  1115. match, the server regards the request as a security breach.
  1116.  
  1117. : A Portion of the NetWare File Server's Connection Table
  1118.  
  1119. The NIC Number and Intermediate Router's Address fields are used for
  1120. sending responses to clients. As a request packet is received, the 
  1121. number of NIC that the request came in on is placed in the NIC Number
  1122. field-this number would be A, B, C, or D for NetWare v2.15c and earlier
  1123. versions, or the network number of the NIC for NetWare versions 3.0 and
  1124. above. If the packet was forwarded through one or more routers, the node
  1125. address of the last router is stored in the Intermediate Router's Address
  1126. field. Hence, when the request has been processed, the server does not
  1127. have to find a route to the client to send a response. The server places
  1128. the node address of the first router in the path to the client-from the
  1129. Intermediate Routers Address field-in the MAC header destination address
  1130. field and sends the packet through the NIC specified in the NIC number
  1131. field. Of course, it first places the client's and its own full network
  1132. address in the destination and source address fields of IPX header,
  1133. respectively.
  1134.  
  1135. The Sequence Number field is used for packet-level error checking. The
  1136. Watchdog Count and Timer fields are used by the watchdog process, which
  1137. is discussed later. File servers also maintain a 100-byte reply buffer
  1138. for each of their connections. If a response to a client is less than 100
  1139. bytes, the server will make a copy of the response in the buffer that
  1140. corresponds to that connection. If the client does not receive the
  1141. response and resends the request, the server will not have to reprocess
  1142. the request.
  1143.  
  1144. Packet-Level Error Checking
  1145.  
  1146. The bit-level error checking that network adapters provide detects the
  1147. corruption of individual bits within a packet. When an adapter finds that
  1148. part of a received packet is corrupted, it discards the entire packet.
  1149. Due to the driver's simple design, no mechanism exists within the driver
  1150. to request that the packet be resent or to inform the upper-layer
  1151. processes and applications that an error occurred. Therefore, the upper-
  1152. level sending process (shell or file server) must determine when a packet
  1153. has not reached its intended destination.
  1154.  
  1155. In the NetWare environment, this packet-level error checking is the
  1156. responsibility of the shell. The NCP specifies that a workstation shell
  1157. can submit only one request to a server at a time. Furthermore, the
  1158. response that the server provides must fit in a single packet-the shell
  1159. should never request more than a packet's worth of information. Thus, to
  1160. guarantee that no packets have been lost, the shell only has to make sure
  1161. that it receives a completed response to each of its requests.
  1162.  
  1163. Each request that a shell sends to a server has a sequence number
  1164. attached to it within the NCP header. The response that the server
  1165. returns is labeled with the same sequence number. Ultimately, the shell
  1166. is responsible for getting completed responses for each of the service
  1167. requests that it submits. If the shell does not receive a response to its
  1168. most recent request within the specified receive time-out, it will
  1169. resubmit the request. The shell continues to resubmit the request until
  1170. it receives a response or exceeds its IPX Retry count.
  1171.  
  1172. Three conditions could cause a shell to time-out while waiting for a
  1173. response from a server. Fig. 30 illustrates a case in which the request
  1174. is lost in transit to the server. The workstation's timer eventually
  1175. expires and the shell resends the same request. The server receives the
  1176. second request, processes it, and sends back the response.
  1177.  
  1178. : Request Lost in Transit to File Server
  1179.  
  1180. In Fig. 31, the request is received by the server but the response is
  1181. lost in transit to the workstation. Once the workstation's timer reaches
  1182. its limit, the shell sends a second identical request to the server.
  1183.  
  1184. When a server receives any request, it checks the request's sequence
  1185. number to see that it is one greater than the sequence number registered
  1186. in the server's connection table. If it is, the server increments that
  1187. number and processes the request as usual. However, if the two numbers
  1188. are the same, the server determines that the client, for whatever reason,
  1189. is resubmitting its last request. In some cases, the server will have a
  1190. copy of the last response. NetWare file servers maintain a 100-byte
  1191. response buffer for each of their connections. If the server is sending a
  1192. response that is less that 100 bytes in size, the server will make a copy
  1193. to that client's buffer-that is, the buffer corresponding to that
  1194. client's connection number. Since a large percentage of responses are
  1195. less that 100 bytes, a good chance exists that a server will have a copy
  1196. of the response when requests are resubmitted by clients. (This type of
  1197. response increments the Duplicate Replies Sent counter on the FCONSOLE
  1198. Statistics->LAN I/O Statistics screen.) On the other hand, if the request
  1199. was larger than 100 bytes, the server must reprocess the request and send
  1200. the response. (This type of response increments the Reexecuted Requests
  1201. counter in FCONSOLE.)
  1202.  
  1203. If the response is still in transit to the workstation when the shell
  1204. times out and resubmits the request-that is, the shell receives the
  1205. completed response after resending the request-the server will send
  1206. another response, but the shell will ignore it.
  1207.  
  1208. :  Response Lost in Transit to Shell
  1209.  
  1210. Sometimes a server may be too busy to respond within the shell's time-
  1211. out. The shell then resends the request. When the server receives this
  1212. second request, it sends a reply to the workstation stating that the
  1213. initial request was received successfully, but that the processing of it
  1214. has not yet been completed (This intermediate response increments the
  1215. Positive Acknowledgments Sent counter within the FCONSOLE Statistics->LAN
  1216. I/O Statistics screen.) When the shell receives this reply from the
  1217. server, it sets its time-out to zero and waits for the request. If the
  1218. shell's time-out expires again, it will send a third copy of the request
  1219. just in case the response was sent by the server but lost in transit.
  1220. This process will continue until the shell finally receives a completed
  1221. response. (See Fig. 32.)
  1222.  
  1223. : File Server is Busy
  1224.  
  1225. Connection-Level Error Checking
  1226.  
  1227. The connection between a workstation and server can be lost due to a
  1228. power failure or a communications problem. Both file servers and
  1229. workstation shells are equipped to handle this eventuality. On the
  1230. workstation side, the connection is checked each time a request is made.
  1231. If the shell does not receive a response to a request after it retries a
  1232. certain number of times (the number dictated by the IPX Retry Count), the
  1233. shell assumes that a problem exists with the connection and displays a
  1234. message for the user. At this point, the user has the choice of ordering
  1235. the shell to resubmit the request again or to abort the operation
  1236. completely.
  1237.  
  1238. If the operation is aborted the shell removes that connection from its
  1239. Connection table. If it does not have any other server connections, it
  1240. attempts to create a new connection with a server (using the initial
  1241. connection sequence outlined in Fig. 25). If this attempt is
  1242. unsuccessful, the shell informs the user with the following message: You
  1243. are not connected to any file servers. The shell will try to connect to a
  1244. file server whenever the current default drive is changed to an invalid
  1245. drive. <Current drive is no longer valid>.
  1246.  
  1247. Connection-level error checking at a NetWare file server comes in the
  1248. form of address verification and periodic watchdog polling. When a file
  1249. server receives a request packet for a certain connection, it verifies
  1250. that the IPX source address within the request packet matches the address
  1251. recorded for that connection within its connection table. If the
  1252. addresses do not match, the server returns a response to the sender of
  1253. the request indicating that the connection number and address do not
  1254. match.
  1255.  
  1256. The Watchdog Process
  1257.  
  1258. When a workstation is turned off, regardless of whether the LOGOUT
  1259. command was issued, the station's connection remains occupied at the
  1260. server. To clear these unused connections, the server uses the watchdog
  1261. process to poll (send a query packet to) clients that the server hasn't
  1262. heard from for a period of five minutes. This five-minute period is
  1263. tracked for each connection in the Watchdog Timer field of the server's
  1264. Connection table. If the shell within the station that the server is
  1265. polling is still operational, it will respond to the query and the server
  1266. will reset its timer for that connection.
  1267.  
  1268. However, if the workstation has been turned off or some communications
  1269. problem exists on the network, the server will not receive a response
  1270. from the shell. In this instance, the watchdog process resets the
  1271. connection's Watchdog Timer field to zero, but increments the Watchdog
  1272. Counter field by one. The next packet that the watchdog process sends to
  1273. the workstation will be sent a minute later. If the watchdog continues to
  1274. hear nothing from the workstation, it will send a packet every minute
  1275. until it has sent a total of 11 polling packets to that workstation. 
  1276. Fig. 33 illustrates the timetable for a connection that does not answer
  1277. to a server's queries. The server will clear the workstation's connection
  1278. if no response to the last watchdog packet is received. (NetWare 386-
  1279. based servers provide a setable parameter that allows administrators to
  1280. monitor when workstations are logged out by the watchdog process. This
  1281. option is set with the following command: SET CONSOLE DISPLAY WATCHDOG
  1282. LOGOUTS = ON.)
  1283.  
  1284. : Watchdog Timetable for a Connection that Does Not Respond
  1285.  
  1286. Conclusions
  1287.  
  1288. NetWare's client-server communications are governed by a series of
  1289. protocols. These protocols can be broken up by functionality: protocols
  1290. used for all communications (the medium access protocols and IPX),
  1291. administrative protocols (the RIP and SAP), protocols concerned with
  1292. connection control (the NCP and Watchdog) and, finally, the protocol with
  1293. defines the coding of service requests (the NCP). This document explains
  1294. the operation and interoperation of these protocols; however, it does not
  1295. attempt to apply this information to all possible network configurations
  1296. and environments. It is up to you to apply this information to your
  1297. specific network(s).
  1298.  
  1299. Appendix A: Implementing Redundant Cabling
  1300.  
  1301. In internetworks that contain 286-based NetWare file servers,
  1302. incorporating multiple paths to those file servers may result in
  1303. inefficient routing. Fig. 34 shows an example of a 286-based NetWare
  1304. internet work that contains redundant paths to two file servers.
  1305.  
  1306. : Sample Redundant Path Configuration
  1307.  
  1308. The problem with this sample network configuration involves the route
  1309. taken by workstations on segment BB to communicate with file server FS1.
  1310. Although the shortest route between the workstations on BB and FS1 is
  1311. through NIC B on FS1, there is a good chance that packets may pass
  1312. through FS2 onto AA and subsequently through NIC A of FS1.
  1313.  
  1314. Since traversing through an intermediate NetWare router can cause up to
  1315. 40 percent degradation in the performance of packet exchanges between a
  1316. workstation and a file server, the scenario illustrated in Fig. 35 is not
  1317. the most desirable.
  1318.  
  1319. : Inefficient Path to FS1
  1320.  
  1321. Routing problems occur because of the file service addressing scheme used
  1322. for 286-based NetWare file servers, combined with the algorithm for
  1323. establishing a connection to a file server.
  1324.  
  1325. File Service Addressing
  1326.  
  1327. The file services of a NetWare file server are assigned a specific
  1328. address within the file server. With 286-based NetWare servers, file
  1329. services are addressed with respect to NIC A in the file server. In other
  1330. words, when the file server advertises its existence, it provides only
  1331. the network and node address assigned to its NIC A-a socket address is
  1332. also included but it is not specific to NIC A. a shows a logical
  1333. representation of the file service addressing within a 286-based NetWare
  1334. file server.
  1335.  
  1336. : Addressing of File Services in NetWare File Servers
  1337.  
  1338. With NetWare 386, the file services are addressed with respect to an
  1339. internal network number assigned when the server is booted up. NetWare
  1340. 386 assigns the file services node address 1. (See Fig. 36b.)
  1341.  
  1342. The Connection Algorithm
  1343.  
  1344. The problem inherent to the addressing scheme used for 286-based NetWare
  1345. file servers arises when LOGIN, ATTACH or the preferred server shell
  1346. attempts to connect to a specific server. Fig. 37 illustrates the way
  1347. that the file services of both servers appear to the workstations.
  1348.  
  1349. As we have seen, a workstation's Get Local Target request asks for the
  1350. fastest route to the network segment on which the file server is located
  1351. (segment AA for FS1.)  Since the router in FS1 and the router in FS2 both
  1352. register the same distance to network segment AA (two Ticks), both will
  1353. respond to the Get Local Target request.
  1354.  
  1355. : Logical Positioning of File Services
  1356.  
  1357. If FS2 is the first to respond to the requests, the workstation assumes
  1358. that FS2 has the fastest route, and therefore sends the create connection
  1359. request packet through FS2. If FS2 is consistently faster than FS1 in
  1360. responding to Get Local Target requests, connections to FS1 will always
  1361. be established through FS2.
  1362.  
  1363. Fig. 38 shows the entire sequence that the workstation goes through to
  1364. connect to FS1 if FS2 responds to a Get Local Target request first. In
  1365. this sequence, FS2 is assumed to be consistently faster than FS1 in
  1366. responding to Get Local Target requests.
  1367.  
  1368. Since FS2 is always the first to respond, the shell initially connects to
  1369. FS2 (using the sequence shown in Fig. 25).  After making this initial
  1370. connection, the shell returns the DOS prompt to the user.
  1371.  
  1372. : Workstation Sequence For Get Local Target   Figure 38 (Continued):
  1373. Workstation Sequence For Get Local Target
  1374.  
  1375. The user can then enter the command "LOGIN FS1/" to log in to FS1
  1376. (following the sequence outlined in Fig. 27). First, the shell queries
  1377. FS2's bindery for FS1's address. Next the workstation broadcasts a Get
  1378. Local Target request. The router for FS1 and the router for FS2 both
  1379. answer this request, but FS2's router responds first. Therefore, the
  1380. workstation assumes that FS2 must have the fastest route to network
  1381. segment AA and sends its connection request-and all subsequent packets
  1382. intended for FS1-through FS2. Since FS1 depends on the workstation to
  1383. find the fastest route between the, FS1 sends all responses through FS2.
  1384.  
  1385. To avoid this inefficient routing scenario, you can connect workstations
  1386. on the same segment as a file server's NIC A when you have redundant
  1387. paths to the server. (See Fig. 39.)  With the correct configuration, the
  1388. shell receives the address of FS1 from FS2's bindery and makes the Get
  1389. Local Target call to IPX. IPX determines that FS1 and the workstation are
  1390. on the same network segment and tells the shell to address packets
  1391. directly to FS1.
  1392.  
  1393. : Correct Configuration of Redundant Paths with 286-based NetWare
  1394.  
  1395. Note that the connection sequence followed for the pre-v3.01 shell and
  1396. LOGIN.EXE  is the same as that followed by the preferred server shell.
  1397. Therefore, the scenario described above applies for the preferred server
  1398. shell when a preferred is specified by the user.
  1399.  
  1400. Another Redundant Path Configuration
  1401.  
  1402. Fig. 40 shows another possible configuration that incorporates redundant
  1403. paths with 286-based NetWare file servers. In this configuration,
  1404. workstations on network BB should have direct access to both FS1 and FS2.
  1405. Due to the 286-based NetWare addressing scheme, however, packets destined
  1406. for one file server might go through the other file server first.
  1407.  
  1408. For instance, if a workstation on BB wants to log in to FS1 but initially
  1409. connects to FS2, it will query FS2's bindery for FS1's address. The
  1410. address returned will include network number AA. The workstation will
  1411. then issue a Get Local Target request for AA. If FS2 responds to this
  1412. request first, the workstation's communications with FS1 will go through
  1413. FS2.
  1414.  
  1415. : Redundant Paths With 286-based NetWare File Server
  1416.  
  1417. Unfortunately, there is no all-inclusive solution to the routing problems
  1418. possible with this configuration. However, the configuration shown in
  1419. Fig. 41 will keep unnecessary routing to a minimum. This configuration
  1420. places NIC A for server FS1 and NIC A for server FS2 on different
  1421. networks: FS1's NIC A is connected to AA; FS2's NIC A is connected to BB.
  1422. Furthermore, workstations that access FS1 the majority of the time are
  1423. connected to AA, while those that access FS2 most often are connected to
  1424. BB. This configuration guarantees workstations a direct path to the file
  1425. server that they access most frequently.
  1426.  
  1427. : Keeping Routing To A Minimum
  1428.  
  1429. Redundant Paths with NetWare 386
  1430.  
  1431. Thanks to the internal network addressing scheme used by NetWare 386-
  1432. based file servers, they avoid the redundant-path problems experienced by
  1433. 286-based NetWare servers. To illustrate, suppose FS1 is a NetWare 386
  1434. file server with an internal network address of CC. In this case, FS2
  1435. registers two Hops to CC, while FS1 registers only one Hop to CC.
  1436.  
  1437. When the shell obtains the address CC from FS2's bindery, only FS1
  1438. responds to the Get Local Target request. FS2 does not answer the request
  1439. because it no longer has a route equal to the fastest route to network
  1440. segment CC.
  1441.  
  1442. The algorithms the NetWare shell uses to connect to a file server are
  1443. relatively simple in design. The basic procedure is the same: get a
  1444. server's address, obtain a route to that address, and send a request to
  1445. establish a connection with the server.
  1446.  
  1447. However, when you configure 286-based NetWare file servers in an
  1448. internetwork with redundant paths, the shell may inadvertently route
  1449. packets through an intermediate router, even though the workstation is
  1450. connected to the same network segment as the file server it wants to
  1451. communicate with. As a result, you must carefully design redundant-path
  1452. networks to avoid such routing inefficiencies. As a general rule, always
  1453. connect those workstations that will spend most of the time accessing a
  1454. certain server to the NIC A segment of that server.
  1455.  
  1456. Appendix B: Internal Components of a File Server
  1457.  
  1458. It is a common misconception that NIC A enjoys a higher priority within
  1459. the 286-based NetWare servers and that it is therefore somewhat faster
  1460. than the other NICs. However, NIC A must vie for access to routing and
  1461. file services as a peer of NICs B, C, and D. In fact, within 286-based
  1462. NetWare servers, the only difference between NIC A and its peers is that
  1463. the address of the server is tied to it.
  1464.  
  1465. 286-Based NetWare Communication Components
  1466.  
  1467. To fully understand the part that NICs play within 286-based and NetWare
  1468. 386 servers, it is necessary to look at the communications components
  1469. that make up a server. Fig. 42 gives a graphic representation of the
  1470. communication-related components of a 286-based server that contains two
  1471. NICs.
  1472.  
  1473. : Internal Communication Components of a 286-based NetWare File Server
  1474.  
  1475. Each NIC has a corresponding driver. These drivers can be logically
  1476. separated into a send portion that transmits packets through the NIC and
  1477. a receive portion that pulls packets off the NIC. The receive portion is
  1478. commonly called the driver interrupt service routine (ISR) since it is
  1479. executed each time the NIC generates a hardware interrupt. (In most
  1480. cases, a hardware interrupt from the NIC indicates that a packet has been
  1481. received.)  When a packet is received, the ISR checks the length of the
  1482. packet to make sure that it is large enough to be a viable IPX packet but
  1483. not so large that it will not fit into the server's buffers. If the
  1484. packet does not pass this test, the driver simply discards it. If the
  1485. packet is viable, the driver attempts to place the packet in a buffer.
  1486.  
  1487. A 286-based file server uses two sets of packet buffers: file service
  1488. process (FSP) buffers and communication buffers. The FSP buffers are
  1489. primarily used for processing service requests (NCP packets) and can
  1490. number between one and 10, depending on the configuration of the server.
  1491. These buffers reside within the DGroup memory segment of the server and
  1492. are subject to its limitations. (Due to the design of the Intel 80286
  1493. processor, memory must be divided into 64KB segments. The DGroup segment
  1494. has been optimized in the NetWare operating system code to be the fastest
  1495. segment. It contains several components besides the FSP buffers which,
  1496. for larger server configurations, may limit the memory available for
  1497. these FSP buffers.)
  1498.  
  1499. All FSP buffers are the same size; they are sized to handle the largest
  1500. packet that  any of the server's NIC drivers can receive. For instance,
  1501. if the server contains an Ethernet driver able to handle 1,024-byte
  1502. packets and an Arcnet driver able to handle 512-byte packets, the buffers
  1503. will sized to handle 1,024-byte packets.
  1504.  
  1505. The communication buffers act as overflow areas for packets being
  1506. received by the server. The number of buffers that exist ranges from 40
  1507. (the default) to 250 for version 2.15c-this number is set within NETGEN
  1508. at installation. These communication buffers are also sized to handle the
  1509. largest receivable packet size. Both sets of buffers are set up as first
  1510. in, first out queues, or linked lists, where the first packets to be
  1511. received are placed at the front of the queue and all subsequent packets
  1512. placed in line after that.
  1513.  
  1514. Without examining the contents of the received packet, the driver ISR
  1515. first attempts to place the packet in an FSP buffer. If the FSP buffers
  1516. are full, the ISR will try to place the packet in a communication buffer.
  1517. The packet is discarded if both sets of buffers are full. The assumption
  1518. is that the packet-level error checking implemented at the transport
  1519. layer (handled by the NCP, SPX, and so on.) will cause the sender to send
  1520. another packet later when the server is not so busy. Once the ISR has
  1521. placed the packet in a buffer or has discarded it, the ISR returns
  1522. control of the CPU to the server and waits for another packet to be
  1523. received by its NIC. The ISR for each NIC follows this same routine. Each
  1524. has equal access to the buffers and places received packets at the end of
  1525. the FSP or communication buffer queues.
  1526.  
  1527. A routing process services the FSP and communication buffers. (This
  1528. process is technically referred to as the Mux process or polling
  1529. process.)  The routing process periodically checks the contents of the
  1530. FSP and communication buffers. This process is responsible for routing
  1531. packets found within these buffers to their proper destination, whether
  1532. that be in or outside the server. Generally, five types of packets can be
  1533. found in the buffers:
  1534.  
  1535. o    Service requests for the file server (NCP packets addressed to the
  1536.      server)
  1537.  
  1538. o    Packets that need to be routed to another network segment
  1539.  
  1540. o    RIP packets
  1541.  
  1542. o    SAP packets
  1543.  
  1544. o    Packets addressed to other processes internal to the file server,
  1545.      such as a nondedicated DOS process or a value-added process (VAP)
  1546.  
  1547. When the routing process examines a packet in one of its buffers, it
  1548. takes one of four actions:
  1549.  
  1550. o    If it finds a service request for the server, the routing process
  1551.      will schedule an FSP to service the request. The routing process
  1552.      will then go on to the next buffer.
  1553.  
  1554. o    If it finds a packet not addressed to the server, the routing
  1555.      process will check its Routing Information table for the best route
  1556.      to the destination and send the packet through the appropriate NIC.
  1557.      In this capacity, the routing process acts as the internal router of
  1558.      a file server.
  1559.  
  1560. o    If it finds a RIP or SAP packet the routing process will update its
  1561.      Routing or Server Information table, respectively, if necessary.
  1562.      However, if the packet is a RIP or SAP request (such as a Get
  1563.      Nearest Server request) the routing process will get the appropriate
  1564.      information from its tables and send a response.
  1565.  
  1566. o    If it finds a packet addressed to another process within the server
  1567.      (the packet would be identified by the destination socket number in
  1568.      the IPX header) the routing process will pass the packet on to that
  1569.      process.
  1570.  
  1571. The routing process first checks the FSP buffers, starting at the top of
  1572. the queue. Since file service requests to the server can only be
  1573. processed in the FSP buffers, the routing process must try to keep the
  1574. FSP buffers as free as possible for these types of packets. Since the NIC
  1575. driver ISRs indiscriminately place packets into whichever buffers are
  1576. free at the time, the routing process may have to shuffle packets back
  1577. and forth between the FSP and communication buffers. Before checking the
  1578. contents of the FSP buffers, the routing process checks into see if all
  1579. the buffers are full. If so, the routing process assumes that some NCP
  1580. requests may have overflowed to the communication buffers. Therefore, any
  1581. non-NCP packets that the routing process finds in the FSP buffers are
  1582. moved over to the communication buffers to make room in the FSP buffers
  1583. for all the NCP requests. If the FSP buffers are not full, the routing
  1584. process simply processes all of the packets where they are.
  1585.  
  1586. Having completed the scheduling or movement of packets in the FSP
  1587. buffers, the routing process switches its attention to the communication
  1588. buffers. The routing process attempts to move any NCP request packets
  1589. that it finds over to the FSP buffers. It places these packets in a
  1590. separate queue within the communication buffers if the FSP buffers are
  1591. full. This queue is later checked by the FSP buffers as they finish
  1592. processing their current requests. Any packets that are not NCP requests
  1593. are routed or processed within the communication buffers by the routing
  1594. process.
  1595.  
  1596. NetWare 386
  1597.  
  1598. The NetWare 386 servers follow the same communication mode as 286-based
  1599. servers, with the following exceptions:
  1600.  
  1601. o    NIC drivers may be used re-entrantly to handle one or more NICs,
  1602.      therefore saving RAM.
  1603.  
  1604. o    Only one set of packet buffers exists within a NetWare 386 server
  1605.      (this difference stems from the 32-bit addressing scheme used by 386
  1606.      processors.)
  1607.  
  1608. o    FSP buffers are taken from a pool as they are needed and are not
  1609.      assigned to one specific buffer. The number of FSP buffers may
  1610.      increase as the load on the server increases.
  1611.  
  1612. o    NetWare 386 servers contain an internal network number for server
  1613.      addressing.
  1614.  
  1615. Fig. 43 illustrates the structure of the NetWare 386 communications
  1616. environment.
  1617.  
  1618. : Internal Communication Components of a NetWare 386 File Server
  1619.  
  1620. Appendix C: RIP and SAP Bandwidth Requirements
  1621.  
  1622. On large internetworks with several hundred servers, administrators
  1623. become concerned with the load that RIP and SAP broadcasts will place on
  1624. their network segments. Of course, these concerns can be appeased for
  1625. asynchronous and X.25 links since only changed server and routing
  1626. information is sent on these lines. On other segment types the traffic
  1627. caused by these broadcasts does not cause a sginificant load. The
  1628. requirements and some examples are shown in Fig. 44. As you can see, the
  1629. SAP broadcasts for an internetwork containing 250 servers account for
  1630. less than one percent of the total bandwidth (10Mb/s) of an Ethernet
  1631. segment.
  1632.  
  1633. : Bandwidth Requirements for 60 Second Broadcasts
  1634.  
  1635. Total traffic load of routing and server information broadcasts on any
  1636. given segment will be equal to broadcasting information about all the
  1637. network segments and servers that exist on the internetwork. For example,
  1638. on a T1 link between two NetWare routers, one router will broadcast
  1639. information about all of the network segments and servers that it is
  1640. making available to the other router (using the best information
  1641. algorithm). The other router will broadcast information about all the
  1642. segments and servers that it is making available to the first router. The
  1643. total of the two equals the total number of servers and segments that
  1644. reside on the internetwork.
  1645.